/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package accesodatos;

/**
 *
 * @author User
 */
public class ManejadorConsultas {
    boolean demografia, ips, fecha,diagnostico, region, ciudad, chGen, chEst, chNiv;
    String genero, estadoCivil, nivelEscolaridad, fechaInicial,fechaFinal;
    int estrato, edadInicial,edadFinal;
    DaoReporte dao = new DaoReporte();
    
    public String ConstruirConsultaFormulacion(String genero,String estadoCivil, 
            String nivelEscolaridad, boolean demografia, int estrato,boolean fecha,int añoInicial, int añoFinal, int mes, boolean porMes){
        String consulta="";
        String select=" SELECT dm.codigo,dm.nombre_generico, count(fm.id_medicamento) cantidad ";
        String from=" FROM formulacion_medicina fm JOIN dimension_medicamento dm ";
        String where = " WHERE fm.id_medicamento=dm.id_medicamento ";
        String group= " GROUP BY ";
        String orderAsc= " ORDER BY cantidad ASC ";
        String orderDes=" ORDER BY cantidad DESC ";
        
        if(demografia){
            from+=" JOIN dimension_demografica D";
            if(where.equals(" WHERE ")){
                 where+=" D.id_demografia=fm.id_demografia";
            }else{
                where+=" AND D.id_demografia=fm.id_demografia";
            }
            if(!estadoCivil.equals("")){
                select+= ", D.estado_civil";
                if(group.equals(" GROUP BY ")){
                    group+= " D.estado_civil";
                }else{
                    group+=" , D.estado_civil";
                }
                
                if(where.equals(" WHERE ")){
                    where+= " D.estado_civil= '"+estadoCivil+"'";
                }else{
                    where+=" AND  D.estado_civil= '"+estadoCivil+"'";
                }
                                 
            }
            if(!genero.equals("")){
                select+= ", D.sexo";
                if(group.equals(" GROUP BY ")){
                    group+= " D.sexo";
                }else{
                    group+=" , D.sexo";
                }
                
                if(where.equals(" WHERE ")){
                    where+= " D.sexo= '"+genero+"'";
                }else{
                    where += " AND D.sexo= '"+genero+"'";
                }
                    
            }
            if(!nivelEscolaridad.equals("")){
                select+=", D.nivel_escolaridad";
                if(group.equals(" GROUP BY ")){
                    group+= " D.nivel_escolaridad";
                }else{
                    group+=" , D.nivel_escolaridad";
                }
                
                if(where.equals(" WHERE ")){
                    where+= " D.nivel_escolaridad= '"+nivelEscolaridad+"'";
                }else{
                    where+= " AND D.nivel_escolaridad= '"+nivelEscolaridad+"'";
                }                    
                
            }
            if(estrato!=0){
                select+=", D.estrato";
                 if(group.equals(" GROUP BY ")){
                    group+= " D.estrato";
                }else{
                    group+=" , D.estrato";
                }
                
                if(where.equals(" WHERE ")){
                    where+= " D.estrato= '"+estrato+"'";
                }else{
                    where+= " AND D.estrato= '"+estrato+"'";
                }  
            }
        }
        if(fecha){
            from+= " JOIN fecha F";
             if(where.equals(" WHERE ")){
                 where+=" fm.id_fecha=F.k_fecha";
            }else{
                where+=" AND fm.id_fecha=F.k_fecha";
            }
             
            if(añoInicial!=0 && añoFinal !=0){
                select+=" ,F.anio"  ;
                if(!where.equals(" WHERE ")){
                    where+= " AND F.anio>='"+añoInicial+"' AND F.anio <= '"+añoFinal+"'";
                }else
                    where+= "F.anio>='"+añoInicial+"' AND F.anio <= '"+añoFinal+"'";
                if(group.equals(" GROUP BY ")){
                    group+= " F.anio";
                }else{
                    group+= " ,F.anio";
                }
                    
            }else if(añoInicial!=0 && añoFinal==0 && !porMes){//MEDICINAS MÁS VENDIDAS POR AÑO
                if(!where.equals(" WHERE ")){
                    where+= " AND F.anio='"+añoInicial+"'";
                }else
                    where+= "F.anio='"+añoInicial+"'";
                if(group.equals(" GROUP BY ")){
                    group+= " fm.id_medicamento";
                }else{
                    group+= " ,fm.id_medicamento";
                }
            }else if(mes!=0 && añoInicial!=0 && porMes){
                 if(!where.equals(" WHERE ")){
                    where+= " AND F.anio='"+añoInicial+"' AND F.mes='"+mes+"'";
                }else
                    where+= " F.anio='"+añoInicial+"' AND F.mes='"+mes+"'";
                if(group.equals(" GROUP BY ")){
                    group+= " fm.id_medicamento";
                }else{
                    group+= " ,fm.id_medicamento";
                }
            }
           
        }
        if(group.equals(" GROUP BY "))
            group=" ";
       consulta+=select + from + where + group +orderDes +";";
       System.out.println(consulta);
       return consulta;
        
    }
    
    public void graficar(String consulta, String tipoGrafica){
        if(tipoGrafica.equals("Barras")){
            dao.pintarReporteBarras(consulta);
        }else if(tipoGrafica.equals("Pastel")){
            dao.pintarReportePastel(consulta);
        }
    }
    
    public String ConstruirConsultaRetiros(String genero, String estadoCivil, String nivelEscolaridad,int estrato, boolean demografia,boolean fecha, int añoInicial,int añoFinal, String retiro){
        String consulta="";
        String select = " SELECT count(*) cantidad ";
        String from= " FROM retiros r ";
        String where= " WHERE ";
        String group= " GROUP BY ";
        
        if(demografia){
            from+=" JOIN dimension_demografica D";
            if(where.equals(" WHERE ")){
                where+= " r.id_demografia=D.id_demografia";
            }else{
                 where+= " AND r.id_demografi=D.id_demografia";
            }
            if(!genero.equals("")){
                if(where.equals(" WHERE ")){
                    where+= " D.sexo= '"+genero+"'";
                }else{
                     where+= " AND D.sexo= '"+genero+"'";
                }
            }
            if(estrato!=0){
                if(where.equals(" WHERE ")){
                    where+= " D.estrato= '"+estrato+"'";
                }else{
                     where+= " AND D.estrato= '"+estrato+"'";
                }
            }
            if(!nivelEscolaridad.equals("")){
                if(where.equals(" WHERE ")){
                    where+= " D.nivel_escolaridad= '"+nivelEscolaridad+"'";
                }else{
                     where+= " AND D.nivel_escolaridad= '"+nivelEscolaridad+"'";
                }
            }
            if(!estadoCivil.equals("")){
                if(where.equals(" WHERE ")){
                    where+= " D.estado_civl= '"+estadoCivil+"'";
                }else{
                     where+= " AND D.estado_civil= '"+estadoCivil+"'";
                }
            }
            
        }
        if(fecha){
            from+=" JOIN fecha F";
            if(where.equals(" WHERE ")){
                where+= " F.k_fecha=r.id_fecha_retiro";
            }else{
                 where+= " AND F.k_fecha=r.id_fecha_retiro";
            }
            
            if(añoInicial!=0 && añoFinal!=0){
                select+=" ,F.anio"  ;
                if(!where.equals(" WHERE ")){
                    where+= " AND F.anio>='"+añoInicial+"' AND F.anio <= '"+añoFinal+"'";
                }else
                    where+= "F.anio>='"+añoInicial+"' AND F.anio <= '"+añoFinal+"'";
                if(group.equals(" GROUP BY ")){
                    group+= " F.anio";
                }else{
                    group+= " ,F.anio";
                }
            }
            if(añoInicial!=0 && añoFinal==0){
                select+= " ,F.nombre_mes";
                if(!where.equals(" WHERE ")){
                    where+= " AND F.anio='"+añoInicial+"'";
                }else{
                    where+= " F.anio='"+añoInicial+"'";
                }
                if(group.equals(" GROUP BY ")){
                    group+= " F.mes";
                }else{
                    group+= " ,F.mes";
                }
            }
            
        }
        if(retiro.equals("CAMBIO DE EPS")){
            if(where.equals(" WHERE ")){
                where+= " r.motivo_retiro='CAMBIO DE EPS'";
            }else{
                where+= " AND r.motivo_retiro='CAMBIO DE EPS'";
            }
        }else if(retiro.equals("PAGO NO OPORTUNO")){
            if(where.equals(" WHERE ")){
                where+= " r.motivo_retiro='PAGO NO OPORTUNO'";
            }else{
                where+= " AND r.motivo_retiro='PAGO NO OPORTUNO'";
            }
        }
        if(group.equals(" GROUP BY "))
            group=" ";
        consulta+=select+from+where+group + ";";
        System.out.println(consulta);
        return consulta;
    }
    
    
    
    public static void main(String [] args){
        ManejadorConsultas man = new ManejadorConsultas();
       // man.graficar(man.ConstruirConsultaFormulacion("M", "Soltero", "", false,2,true,2006,2008,1,true), "Barras"); //MEDICAMENTOS EN UN MES EN UN AÑO Espeficifico SIN DEMOGRAFIA
//        man.ConstruirConsultaFormulacion("M", "Soltero", "Universitaria", true,0,true,2006,2007,1,false);//MEDICAMENTOS EN UN MES EN UN AÑO Espeficifico CON DEMOGRAFIA
         // man.ConstruirConsultaRetiros("M", "Soltero", "", 1, true, true, 2006, 2008,"PAGO NO OPORTUNO");
    }
}
